{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "ca1d91c8-03b0-4f63-b69a-bcc69aabb52f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "葡萄酒数据集如下:\n",
      "     lable     a1    a2    a3    a4   a5    a6    a7    a8    a9    a10   a11  \\\n",
      "0        1  14.23  1.71  2.43  15.6  127  2.80  3.06  0.28  2.29   5.64  1.04   \n",
      "1        1  13.20  1.78  2.14  11.2  100  2.65  2.76  0.26  1.28   4.38  1.05   \n",
      "2        1  13.16  2.36  2.67  18.6  101  2.80  3.24  0.30  2.81   5.68  1.03   \n",
      "3        1  14.37  1.95  2.50  16.8  113  3.85  3.49  0.24  2.18   7.80  0.86   \n",
      "4        1  13.24  2.59  2.87  21.0  118  2.80  2.69  0.39  1.82   4.32  1.04   \n",
      "..     ...    ...   ...   ...   ...  ...   ...   ...   ...   ...    ...   ...   \n",
      "173      3  13.71  5.65  2.45  20.5   95  1.68  0.61  0.52  1.06   7.70  0.64   \n",
      "174      3  13.40  3.91  2.48  23.0  102  1.80  0.75  0.43  1.41   7.30  0.70   \n",
      "175      3  13.27  4.28  2.26  20.0  120  1.59  0.69  0.43  1.35  10.20  0.59   \n",
      "176      3  13.17  2.59  2.37  20.0  120  1.65  0.68  0.53  1.46   9.30  0.60   \n",
      "177      3  14.13  4.10  2.74  24.5   96  2.05  0.76  0.56  1.35   9.20  0.61   \n",
      "\n",
      "      a12   a13  \n",
      "0    3.92  1065  \n",
      "1    3.40  1050  \n",
      "2    3.17  1185  \n",
      "3    3.45  1480  \n",
      "4    2.93   735  \n",
      "..    ...   ...  \n",
      "173  1.74   740  \n",
      "174  1.56   750  \n",
      "175  1.56   835  \n",
      "176  1.62   840  \n",
      "177  1.60   560  \n",
      "\n",
      "[178 rows x 14 columns]\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "names=['lable','a1','a2','a3','a4','a5','a6','a7','a8','a9','a10','a11','a12','a13']\n",
    "dataset=pd.read_csv(\"wine.data\",names=names)\n",
    "print(\"葡萄酒数据集如下:\")\n",
    "print(dataset)\n",
    "data=dataset.iloc[range(0,178),range(1,14)]\n",
    "target=dataset.iloc[range(0,178),range(0,1)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "9aec992f-378f-4037-b04d-f18e484927ee",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "a 1 中异常值: []\n",
      "a 2 中异常值: [5.8 5.51 5.65]\n",
      "a 3 中异常值: [1.36 3.22 3.23]\n",
      "a 4 中异常值: [10.6 30.0 28.5 28.5]\n",
      "a 5 中异常值: [151.0 139.0 136.0 162.0]\n",
      "a 6 中异常值: []\n",
      "a 7 中异常值: []\n",
      "a 8 中异常值: []\n",
      "a 9 中异常值: [3.28 3.58]\n",
      "a 10 中异常值: [10.8 13.0 11.75 10.68]\n",
      "a 11 中异常值: [1.71]\n",
      "a 12 中异常值: []\n",
      "a 13 中异常值: []\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 15 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.rcParams['axes.unicode_minus']=False\n",
    "data.plot(kind='box',subplots=True,layout=(3,5),sharex=False,sharey=False)\n",
    "p=data.boxplot(return_type='dict')\n",
    "for i in range(13):\n",
    "    y=p['fliers'][i].get_ydata()\n",
    "    print('a',i+1,'中异常值:',y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "27f0aaf3-6725-4722-9223-7d91984d058a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 1.51861254 -0.56906261  0.26105088 ...  0.39346131  1.83381234\n",
      "   1.01300893]\n",
      " [ 0.24628963 -0.50234086 -0.90869274 ...  0.43875109  1.10735109\n",
      "   0.96524152]\n",
      " [ 0.19687903  0.05049647  1.22911457 ...  0.34817153  0.7860317\n",
      "   1.39514818]\n",
      " ...\n",
      " [ 0.33275817  1.88057869 -0.4246609  ... -1.64457872 -1.46320409\n",
      "   0.28057537]\n",
      " [ 0.20923168  0.26972507  0.01903496 ... -1.59928894 -1.37938164\n",
      "   0.29649784]\n",
      " [ 1.39508604  1.70900848  1.51146647 ... -1.55399916 -1.40732245\n",
      "  -0.59516041]]\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "from sklearn import preprocessing\n",
    "names=['lable','a1','a2','a3','a4','a5','a6','a7','a8','a9','a10','a11','a12','a13']\n",
    "dataset=pd.read_csv(\"wine-clean.data\",names=names)\n",
    "data=dataset.iloc[range(0,178),range(1,14)]\n",
    "target=dataset.iloc[range(0,178),range(0,1)].values.reshape(1,178)[0]\n",
    "cdata=preprocessing.StandardScaler().fit_transform(data)\n",
    "print(cdata)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "d8a2bba8-d1c5-40eb-81ae-ea7ae965c7fb",
   "metadata": {},
   "outputs": [
    {
     "ename": "AttributeError",
     "evalue": "module 'matplotlib.pyplot' has no attribute 'rcPaeams'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "Cell \u001b[1;32mIn[27], line 13\u001b[0m\n\u001b[0;32m     11\u001b[0m     scores\u001b[38;5;241m=\u001b[39mcross_val_score(model,x,y,cv\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m5\u001b[39m,scoring\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124maccuracy\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m     12\u001b[0m     k_error\u001b[38;5;241m.\u001b[39mappend(\u001b[38;5;241m1\u001b[39m\u001b[38;5;241m-\u001b[39mscores\u001b[38;5;241m.\u001b[39mmean())\n\u001b[1;32m---> 13\u001b[0m plt\u001b[38;5;241m.\u001b[39mrcPaeams[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mfont.sans-serif\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSimhei\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m     14\u001b[0m plt\u001b[38;5;241m.\u001b[39mplot(k_range,k_error,\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mr-\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m     15\u001b[0m plt\u001b[38;5;241m.\u001b[39mxlabel(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mk的取值\u001b[39m\u001b[38;5;124m'\u001b[39m)\n",
      "\u001b[1;31mAttributeError\u001b[0m: module 'matplotlib.pyplot' has no attribute 'rcPaeams'"
     ]
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.model_selection import cross_val_score\n",
    "x,y=cdata,target\n",
    "x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=0)\n",
    "k_range=range(1,15)\n",
    "k_error=[]\n",
    "for k in k_range:\n",
    "    model=KNeighborsClassifier(n_neighbors=k)\n",
    "    scores=cross_val_score(model,x,y,cv=5,scoring='accuracy')\n",
    "    k_error.append(1-scores.mean())\n",
    "plt.rcParams['font.sans-serif']='Simhei'\n",
    "plt.plot(k_range,k_error,'r-')\n",
    "plt.xlabel('k的取值')\n",
    "plt.ylabel('预测误差率')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9e7302bd-d884-42f2-bae7-ecd7be6d73ed",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
